package org.app.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.app.entity.ServiceRequest;
import org.app.exception.BusinessException;

public interface ServiceRequestService extends IService<ServiceRequest> {
    
    /**
     * 回复服务请求
     */
    void reply(Long id, String reply, Long replyUserId);
    
    /**
     * 分页查询用户的服务请求
     */
    Page<ServiceRequest> getUserServicePage(Long userId, Integer pageNum, Integer pageSize, Integer type);
    
    /**
     * 分页查询所有服务请求（管理员）
     */
    Page<ServiceRequest> getAdminServicePage(Integer pageNum, Integer pageSize, Integer type, Integer status);
    
    /**
     * 获取服务请求详情（包含用户信息）
     */
    ServiceRequest getServiceDetail(Long id);
    
    /**
     * 撤销服务申请
     * @param id 服务申请ID
     * @param userId 当前用户ID
     * @throws BusinessException 如果服务不存在、不是申请人或状态不允许撤销
     */
    void revoke(Long id, Long userId);
    
    /**
     * 取消服务申请
     */
    void cancel(Long id, Long userId);
    
    /**
     * 确认服务完成
     */
    void confirm(Long id, Long userId);
} 